#define _CRT_SECURE_NO_WARNINGS
//#include<iostream>
//#include<vector>
//using namespace std;

//class A
//{
//public:
//	A(int a = 100)
//	{
//		_a = a;
//	}
//	int _a = 0;
//protected:
//};
//
//class B :public A
//{
//public:
//	B(int b)
//		:_b(1)
//	{}
//	int _b = 1;
//protected:
//};
//
//int main()
//{
//	B b(2);
//	cout << b._a << endl;
//
//	return 0;
//}


//
//double a[100000];
//
//int main()
//{
//	int n = 0;
//	cin >> n;
//	vector<long long> v(n);
//
//	for (int i = 0; i < n; i++)
//	{
//		cin >> v[i];
//	}
//
//	long long x1 = 1, x2 = 1;
//	a[0] = v[0] / x1;
//	a[1] = v[1] / x2;
//	for (int i = 2; i < n; i++)
//	{
//		long long tmp = x1 + x2;
//		x1 = x2;
//		x2 = tmp;
//		a[i] = 1.0 * v[i] / tmp;
//	}
//	
//	sort(a,a+n);
//
//	int max = 0;
//	int i = 0;
//	while(i < n)
//	{
//		int count = 0;
//		int j = 0;
//		while (j < n - i)
//		{
//			if (a[i] == a[i+j])
//			{
//				count++;
//			}
//			else
//			{
//				break;
//			}
//			j++;
//		}
//		i += j;
//		if (count > max)
//		{
//			max = count;
//		}
//	}
//
//	cout << n-max << endl;
//
//	return 0;
//}



//int main()
//{
//	int n = 0;
//	cin >> n;
//	vector<long long> v(n);
//
//	for (int i = 0; i < n; i++)
//	{
//		cin >> v[i];
//	}
//
//	int count = 0;
//	if (v[0] != v[1])
//	{
//		count++;
//		if (v[0] < 0)
//		{
//			v[0] = v[1];
//		}
//		else
//		{
//			v[1] = v[0];
//		}
//	}
//
//	for (int i = 2; i < n; i++)
//	{
//		if (v[i] != v[i - 1] + v[i - 2])
//		{
//			v[i] = v[i - 1] + v[i - 2];
//			count++;
//		}
//	}
//	cout << count << endl;
//
//	return 0;
//}


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

//int main()
//{
//	int x, y;
//	string s1;
//	string s2;
//	cin >> x >> y;
//	cin >> s1 >> s2;
//
//	string s3;
//
//	s3.resize(s1.size() + s2.size());
//	sort(s2.begin(), s2.end());
//	int i = 0;
//	int j = 0;
//	int z = 0;
//
//	while (i < s1.size())
//	{
//		while (j < s2.size() && s1[i] >= s2[j])
//		{
//			s3[z++] = s2[j++];
//		}
//		s3[z++] = s1[i];
//		i++;
//	}
//
//	while (j < s2.size())
//	{
//		s3[z++] = s2[j++];
//	}
//
//	cout << s3 << endl;
//
//
//	return 0;
//}


class Solution {
public:
    void duplicateZeros(vector<int>& arr)
    {
        int dest = -1, cur = 0;
        while (cur < arr.size())
        {
            if (arr[cur] == 0)
            {
                dest += 2;
            }
            else
            {
                dest += 1;
            }
            if (dest >= arr.size() - 1)
                break;
            cur++;
        }
        if (dest == arr.size())
        {
            arr[dest - 1] = 0;
            dest -= 2;
            cur--;
        }
        while (cur >= 0)
        {
            if (arr[cur] == 0)
            {
                arr[dest--] = 0;
                arr[dest--] = 0;
            }
            else
            {
                arr[dest--] = arr[cur];
            }
            cur--;
        }

    }
};

int main()
{
    vector<int> v1{0,0,0,0,0,0,0};
    Solution().duplicateZeros(v1);

    return 0;
}